//
// Created by zhanghuaming on 2025/10/10.
//

#ifndef TEST_CLIENT_H
#define TEST_CLIENT_H

#include <winsock2.h>
#include <iostream> // 用于错误输出

// 启动TCP客户端连接到Modbus服务器
SOCKET *startTcpClient();

// 从TCP socket读取数据
// 参数:
//   sock - 已连接的socket
//   buf - 接收缓冲区
//   count - 要读取的字节数
//   timeout_ms - 超时时间(毫秒)
// 返回:
//   成功返回读取的字节数，失败返回-1
int32_t tcp_read(SOCKET sock, uint8_t* buf, uint16_t count, int32_t timeout_ms);

// 向TCP socket写入数据
// 参数:
//   sock - 已连接的socket
//   buf - 发送缓冲区
//   count - 要发送的字节数
//   timeout_ms - 超时时间(毫秒)
// 返回:
//   成功返回发送的字节数，失败返回-1
int32_t tcp_write(SOCKET sock, const uint8_t* buf, uint16_t count, int32_t timeout_ms);

#endif //TEST_CLIENT_H